package threadsocket.udp;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.util.Scanner;

/**
 * @author Yancy
 * @program springioctest
 * @create 2021-01-18
 */
public class AskServer {

  public static void main(String[] args) throws IOException {

    // 创建DatagramSocket,用来发送或者接收数据
    DatagramSocket ds = new DatagramSocket(8888);
      Scanner scanner = new Scanner(System.in);
    while (true) {
      // 使用DatagramPacket接收一个DatagramPacket
      byte[] buf = new byte[1024];
      DatagramPacket dp = new DatagramPacket(buf, buf.length);
      ds.receive(dp);
      String str = new String(buf, 0, dp.getLength());
      if ("bye".equals(str)) {
        break;
      }
      System.out.println(str);

      // 使用DatagramPacket发送一个DatagramPacket
//        String info = "亲，在的";
        String info = scanner.nextLine();
        byte[] buf2 = ("李四："+info).getBytes();
        InetAddress address = dp.getAddress();
        int port = dp.getPort();
        DatagramPacket dp2 = new DatagramPacket(buf2,buf2.length,address,port);
        ds.send(dp2);

    }
    // 关闭资源
    ds.close();

    //    // 指定监听端口
    //    DatagramSocket datagramSocket = new DatagramSocket(6666);
    //    for (; ; ) {
    //      // 数据缓冲区
    //      byte[] buf = new byte[1024];
    //      DatagramPacket dp = new DatagramPacket(buf, buf.length);
    //      // 收取一个数据包
    //      datagramSocket.receive(dp);
    //      // 收取到的数据存储在buffer中，由dp.getOffset(),dp.getLength()指定起始位置和长度
    //      // 将其按UTF-8编码转换为String:
    //      String s = new String(dp.getData(), dp.getOffset(), dp.getLength(),
    // StandardCharsets.UTF_8);
    //      // 发送数据:
    //      byte[] data = "ACK".getBytes(StandardCharsets.UTF_8);
    //      dp.setData(data);
    //      datagramSocket.send(dp);
    //    }
  }
}
